# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Compute.V1.Model.CustomErrorResponsePolicy do
  @moduledoc """
  Specifies the custom error response policy that must be applied when the backend service or backend bucket responds with an error.

  ## Attributes

  *   `errorResponseRules` (*type:* `list(GoogleApi.Compute.V1.Model.CustomErrorResponsePolicyCustomErrorResponseRule.t)`, *default:* `nil`) - Specifies rules for returning error responses. In a given policy, if you specify rules for both a range of error codes as well as rules for specific error codes then rules with specific error codes have a higher priority. For example, assume that you configure a rule for 401 (Un-authorized) code, and another for all 4 series error codes (4XX). If the backend service returns a 401, then the rule for 401 will be applied. However if the backend service returns a 403, the rule for 4xx takes effect.
  *   `errorService` (*type:* `String.t`, *default:* `nil`) - The full or partial URL to the BackendBucket resource that contains the custom error content. Examples are: - https://www.googleapis.com/compute/v1/projects/project/global/backendBuckets/myBackendBucket - compute/v1/projects/project/global/backendBuckets/myBackendBucket - global/backendBuckets/myBackendBucket If errorService is not specified at lower levels like pathMatcher, pathRule and routeRule, an errorService specified at a higher level in the UrlMap will be used. If UrlMap.defaultCustomErrorResponsePolicy contains one or more errorResponseRules[], it must specify errorService. If load balancer cannot reach the backendBucket, a simple Not Found Error will be returned, with the original response code (or overrideResponseCode if configured). errorService is not supported for internal or regional HTTP/HTTPS load balancers.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :errorResponseRules =>
            list(GoogleApi.Compute.V1.Model.CustomErrorResponsePolicyCustomErrorResponseRule.t())
            | nil,
          :errorService => String.t() | nil
        }

  field(:errorResponseRules,
    as: GoogleApi.Compute.V1.Model.CustomErrorResponsePolicyCustomErrorResponseRule,
    type: :list
  )

  field(:errorService)
end

defimpl Poison.Decoder, for: GoogleApi.Compute.V1.Model.CustomErrorResponsePolicy do
  def decode(value, options) do
    GoogleApi.Compute.V1.Model.CustomErrorResponsePolicy.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Compute.V1.Model.CustomErrorResponsePolicy do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
